前兩篇的暴力系列看起來非常的有(絕)趣(望),此時我萌生的想法有兩個
dataset
的處理LSTM
的配置其中,如果想要改變dataset
的處理方式,最好的方法就是直接將多餘重複的部分直接去掉。這絕對是一個可行的方式,在之後的兩天內,我應該會使用這個方式試看看。 另一個為什麼提到LSTM
的配置呢? 因為我在看RNN
的基礎架構的時候,所接收到的是對於time stamp
,它可以是「沒有限制」的,那麼為什麼我們在使用LSTM layers
的時候,卻是一定要有time stamp
的設置? 所以我們今天來稍微踩踩keras-LSTM
的坑吧!
Keras
中 Recurrent Layers
種類類別 | 繼承 |
---|---|
RNN | Layer |
SimpleRNN | RNN |
GRU | RNN |
LSTM | RNN |
ConvLSTM2D | RNN |
ConvLSTM2DCell | Layer |
SimpleRNNCell | Layer |
GRUCell | Layer |
LSTMCell | Layer |
CuDNNGRU | _CuDNNRNN |
CuDNNLSTM | _CuDNNRNN |
我特別列出繼承的類是因為想要更清楚了解他們底層的運作
RNN
類別的特殊功能此為RNN原本的隱藏可選input,由
**kwargs
傳入
RNN
的state
RNN
的reset_states
方法透過輸入來更改狀態Attention
而設的機制,但細節我不是很清楚其實當初在看這部分的時候就有疑問,為什麼會有分
LSTM
和LSTMCell
?
time stamp
個數喔挖嗚~ 說認真,我原本想要嘗試使用輸入
time stamp
為1
的LSTM layers
來建構我認識的RNN
模型,現在看來使用cell
好像就可以解決啦?
在tensorflow 1.4 core
裡面是這麼描述RNN layers
和cell
之間的關係的
The cell is the inside of the
for
loop of a RNN layer. Wrapping a cell inside atf.keras.layers.RNN
layer gives you a layer capable of processing batches of sequences, e.g.RNN(LSTMCell(10))
也就是說,當你使用Cell
建構後,還是可以使用RNN
包起來幫你處理整串資料,但這句話也表示了你還是用layers
就好吧! 省得麻煩 (~ 是的,我應該接收到了
其實在理解RNN
系列的過程滿累的,這次並沒有把坑踩好踩滿,我有查了怎麼建構雙向LSTM、怎麼使用reset_states()
、怎麼「跨批次處理」資料,但我認為無法把整理寫得好,今天小提一下並記錄LSTM
中的一些細節,之後如果有用到再補上XD
constant
cell